'''
В различных социальных сетях существуют системы лайков, которые в зависимости от количества людей, оценивших запись, показывают соответствующую информацию.
Реализуйте функцию likes(), которая принимает один аргумент:
    names — список имён
Функция должна возвращать строку в соответствии с примерами ниже, содержание которой зависит от количества имён в списке names.
Приведенный ниже код:
    print(likes([]))
    print(likes(['Тимур']))
    print(likes(['Тимур', 'Артур']))
    print(likes(['Тимур', 'Артур', 'Руслан']))
    print(likes(['Тимур', 'Артур', 'Руслан', 'Анри']))
    print(likes(['Тимур', 'Артур', 'Руслан', 'Анри', 'Дима']))
    print(likes(['Тимур', 'Артур', 'Руслан', 'Анри', 'Дима', 'Рома', 'Гвидо', 'Марк']))
должен выводить:    
    Никто не оценил данную запись
    Тимур оценил(а) данную запись
    Тимур и Артур оценили данную запись
    Тимур, Артур и Руслан оценили данную запись
    Тимур, Артур и 2 других оценили данную запись
    Тимур, Артур и 3 других оценили данную запись
    Тимур, Артур и 6 других оценили данную запись
Примечание 1. Имена в формируемой и возвращаемой функцией строке должны располагаться в своем исходном порядке.
Примечание 2. Обратите внимание, что если в передаваемом в функцию списке более трех имен, то явно указываются лишь первые два из них. 
Примечание 3. В тестирующую систему сдайте программу, содержащую только необходимую функцию likes(), но не код, вызывающий ее.
'''
def likes(names):
    if len(names)== 1:
        return names[0]+' оценил(а) данную запись'
    elif len(names)== 2:
        return names[0]+" и "+  names[1] + ' оценили данную запись'
    elif len(names)== 3:
        return names[0]+", "+  names[1] + " и "+ names[2] +' оценили данную запись'
    elif len(names)> 3:
        return names[0]+", "+  names[1] + " и "+ str(len(names)-2) +' других оценили данную запись'
    else:
        return 'Никто не оценил данную запись'

# def likes(names):
#     n = len(names)
#     return {
#         0: 'no one likes this',
#         1: '{} likes this', 
#         2: '{} and {} like this', 
#         3: '{}, {} and {} like this', 
#        4: '{}, {} and {others} others like this'
#     }[min(4, n)].format(*names[:3], others=n-2)